package com.zyg.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zyg.pojo.User;
import com.zyg.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;


    @GetMapping("/list")
    public String getAllUsers(
            @RequestParam(defaultValue = "1") int pageNum, // 当前页码，默认值为1
            @RequestParam(defaultValue = "10") int pageSize, // 每页大小，默认值为10
            @RequestParam(required = false) String name, // 查询条件：用户名
            @RequestParam(required = false) String identificationNumber, // 查询条件：身份证号
            Model model
    ) {
        // 使用分页工具获取分页数据
        Page<User> page = userService.getUserPage(pageNum, pageSize, name, identificationNumber);

        // 将分页数据和页码信息传递给前端
        model.addAttribute("pageInfo", page);
        model.addAttribute("allUsers", page.getRecords()); // 当前页的用户数据

        return "user/list"; // 返回模板页面
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Integer id) {
        return userService.getById(id);
    }

    @RequestMapping("/add")
    public ModelAndView add(){
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.setViewName("user/add");
        return modelAndView;
    }
    @PostMapping("/addSave")
    public String addUser(@ModelAttribute User user) {
        boolean isSaved = userService.save(user); // 保存用户信息
        if (isSaved) {
            return "redirect:/user/list"; // 保存成功后重定向到用户列表页面
        } else {
            return "error"; // 保存失败后跳转到错误页面（需要创建对应页面）
        }
    }
    @GetMapping("/delete")
    public String delete(@RequestParam Integer id) {
        boolean isRemoved = userService.removeById(id); // 根据 id 删除用户
        if (isRemoved) {
            return "redirect:/user/list"; // 删除成功后重定向到用户列表页面
        } else {
            return "error"; // 删除失败后跳转到错误页面（需要创建对应页面）
        }
    }

    @RequestMapping("/update")
    public ModelAndView update(@RequestParam Integer id){
        ModelAndView modelAndView=new ModelAndView();
        User userById = userService.getById(id);
        modelAndView.addObject("user",userById);
        modelAndView.setViewName("user/update");
        return modelAndView;
    }
    @PostMapping("/updateSave")
    public String updateUser(User user) {
        boolean isUpdated = userService.updateById(user); // 更新用户数据
        if (isUpdated) {
            return "redirect:/user/list"; // 更新成功后重定向到用户列表页面
        } else {
            return "error"; // 更新失败跳转到错误页面
        }
    }

}
